#include "src/Debug.h"
#include "src/Sistema.h"
#include <signal.h>
#include <stdio.h>
#include <errno.h>
#include "src/GenericException.h"

int main(int argc, char** argv){

	int opt;
	char * archivoLog=NULL;
	int tiempo=20000; //20 segundos

	while ((opt = getopt(argc, argv, "l:t:h")) != -1) {
		switch (opt) {
		case 'l':
			archivoLog = optarg;
			break;
		case 't':
			tiempo = atoi(optarg);
			break;
		case 'h':
			std::cout << "Parámetros válidos: \n -l <archivo de log>\n -t <intervalo de\
 actualizacion del tablero en milisegundos>\n -h ayuda\n";
			break;
		default: break; 
		} 
	}

	// Ignoro ^C
	if(signal(SIGINT, SIG_IGN) == SIG_ERR){
		perror("No me puedo proteger de SIGINT.");
		return 1;
	}

	if(archivoLog != NULL)
		std::dbg.setArchivo(archivoLog);  //asigna archivo de log

	try{
		Sistema s;
		s.setTiempoActualizacion(tiempo);
		s.loopPrincipal();
	}
	catch (GenericException &e){
		std::cout << "El programa terminó prematuramente: " << e.what() << "\n";
	}

	return 0;
}
